Установка значений параметрических полей.
Параметрические поля предназначены для запроса у пользователя дополнительных сведений в момент формирования отчета. Seagate не рекомендует использовать такие поля в отчетах, интегрированных в пользовательские приложения, а манипулировать формулами, или готовить источник данных в самом приложении. Однако категорического запрета нет, и если имеются такие поля, есть два возможных варианта дальнейших действий:
1. Оставить все как есть.В этом случае будет выведено стандартное окно-приглашение на ввод (или выбор) значения параметра.
2. Установить значения параметрических полей программно.
Второй вариант имеет ряд ограничений: поддерживаются только дискретные значения параметров. Диапазоны значений и множественный выбор не поддерживаются!
Все параметрические поля объекта Report входят в коллекцию ParameterFields, состоящую из объектов ParameterFieldDefenition, каждый из которых описывает свое параметрическое поле. Индексация элементов коллекции также начинается с единицы.
Для передачи значения в параметрическое поле служит метод AddCurrentValue. Давайте возьмем наш предыдущий пример, и предположим, что значение скидки передается в параметрическое поле:
If txtDiscount.Text = "" Then Report.ParameterFields(1).AddCurrentValue (0) Else Report. ParameterFields(1).AddCurrentValue (Val(txtDiscount.Text)) End If
Управление группами отчета.
О группах отчета уже говорилось. При разработке приложения может оказаться, что одному пользователю необходим отчет, сгруппированный по датам, другому – по товарам. Конечно, можно использовать два отдельных отчета, но объектная модель RDC позволяет управлять группировкой данных программно. Группировка по полям базы данных осуществляется в свойстве GroupConditionField объекта Area (область), который, в свою очередь является членом коллекции Areas. Можно считать «областями» главные секции отчета. Но если в отчете несколько одинаковых секций (например Details a, Details b ), все они представлены одной коллекцией Areas. Это позволяет при обращении к областям кроме числовых индексов применять их обозначения:
RH Заголовок отчета PH Заголовок страницы GHn Заголовок группы D Подробности GFn Колонтитул группы PF Колонтитул страницы RF Колонтитул отчета
В качестве значения свойству GroupConditionField передается поле БД, по которому осуществляется группировка. Пример:
If b Then Report.Areas(“GH”). GroupConditionField=Report.Database.Tables(1). Fields(5) Report. Areas(“GH”).GroupCondition=crGCQuaterly Else Report.Areas(“GH”). GroupConditionField=Report.Database.Tables(1). Fields(1) Report. Areas(“GH”).GroupCondition=crGCAnyValue End if